From 0b92348077489047af98f360fd9bb3d59ee6d04a Mon Sep 17 00:00:00 2001 From: Tristan Van Berkom Date: Tue, 20 Apr 2010 00:33:20 -0400 Subject: [PATCH] Fixed acces of child->requisition; call gtk_widget_get_child_requisition instead. This fixes squished pathbar issue (as access to ->requisition is really not supported anymore). --- gtk/gtkpathbar.c | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/gtk/gtkpathbar.c b/gtk/gtkpathbar.c index 87bec1adfc..10c1f3cb8a 100644 --- a/gtk/gtkpathbar.c +++ b/gtk/gtkpathbar.c @@ -461,6 +461,7 @@ gtk_path_bar_size_allocate (GtkWidget *widget, gint border_width; gboolean need_sliders = FALSE; gint up_slider_offset = 0; + GtkRequisition child_requisition; widget->allocation = *allocation; @@ -481,13 +482,15 @@ gtk_path_bar_size_allocate (GtkWidget *widget, if (path_bar->fake_root) width = path_bar->spacing + path_bar->slider_width; else - width = 0; + width = 0; for (list = path_bar->button_list; list; list = list->next) { child = BUTTON_DATA (list->data)->button; - width += child->requisition.width + path_bar->spacing; + gtk_widget_get_child_requisition (child, &child_requisition); + + width += child_requisition.width + path_bar->spacing; if (list == path_bar->fake_root) break; } @@ -515,19 +518,23 @@ gtk_path_bar_size_allocate (GtkWidget *widget, * button, then count backwards. */ /* Count down the path chain towards the end. */ - width = BUTTON_DATA (first_button->data)->button->requisition.width; + gtk_widget_get_child_requisition (BUTTON_DATA (first_button->data)->button, &child_requisition); + + width = child_requisition.width; list = first_button->prev; while (list && !reached_end) { child = BUTTON_DATA (list->data)->button; - if (width + child->requisition.width + + gtk_widget_get_child_requisition (child, &child_requisition); + + if (width + child_requisition.width + path_bar->spacing + slider_space > allocation_width) reached_end = TRUE; else if (list == path_bar->fake_root) break; else - width += child->requisition.width + path_bar->spacing; + width += child_requisition.width + path_bar->spacing; list = list->prev; } @@ -538,13 +545,15 @@ gtk_path_bar_size_allocate (GtkWidget *widget, { child = BUTTON_DATA (first_button->next->data)->button; - if (width + child->requisition.width + path_bar->spacing + slider_space > allocation_width) + gtk_widget_get_child_requisition (child, &child_requisition); + + if (width + child_requisition.width + path_bar->spacing + slider_space > allocation_width) { reached_end = TRUE; } else { - width += child->requisition.width + path_bar->spacing; + width += child_requisition.width + path_bar->spacing; if (first_button == path_bar->fake_root) break; first_button = first_button->next; @@ -582,7 +591,9 @@ gtk_path_bar_size_allocate (GtkWidget *widget, button_data = BUTTON_DATA (list->data); child = button_data->button; - child_allocation.width = MIN (child->requisition.width, + gtk_widget_get_child_requisition (child, &child_requisition); + + child_allocation.width = MIN (child_requisition.width, allocation_width - (path_bar->spacing + path_bar->slider_width) * 2); if (direction == GTK_TEXT_DIR_RTL) @@ -601,7 +612,7 @@ gtk_path_bar_size_allocate (GtkWidget *widget, break; } - if (child_allocation.width < child->requisition.width) + if (child_allocation.width < child_requisition.width) { if (!gtk_widget_get_has_tooltip (child)) gtk_widget_set_tooltip_text (child, button_data->dir_name); -- 2.30.2